    <template>


      <div class="app-container">



        <el-card shadow="always" style="margin-top: 20px;">
          <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="160px">
        <el-row :gutter="20">
          <el-col :span="22">
          <el-row :gutter="20">
            <el-col :span="24">
              <el-form-item label="征集指南" prop="publishId">
                <el-input
                  v-model="queryParams.publishId"
                  placeholder="请输入征集指南"
                  clearable
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="项目名称" prop="projectName">
                <el-input
                  v-model="queryParams.projectName"
                  placeholder="请输入项目名称"
                  clearable
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="研究领域" prop="researchField">
                <el-input
                  v-model="queryParams.researchField"
                  placeholder="请输入研究领域"
                  clearable
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="所属方向" prop="deptId">
                <el-select v-model="queryParams.deptId" placeholder="请选择所属研究方向" clearable>
                    <el-option
                      v-for="dept in deptList"
                      :key="dept.deptId"
                      :label="dept.deptName"
                      :value="dept.deptId"
                    />

                  </el-select>
              </el-form-item>

              </el-form-item>

            </el-col>
            <el-col :span="24">
              <el-form-item label="申报时间" prop="applicationTime">
                <el-date-picker clearable
                  v-model="queryParams.applicationTime"
                  type="date"
                  style="width: 208px"
                  value-format="yyyy-MM-dd"
                  placeholder="请选择申报时间">
                </el-date-picker>
              </el-form-item>

              <el-form-item label="执行期限">
                <el-date-picker
                  v-model="daterangeExecutionPeriod"
                  style="width: 208px"
                  value-format="yyyy-MM-dd"
                  type="daterange"
                  range-separator="-"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                ></el-date-picker>
              </el-form-item>


            </el-col>
          </el-row>
          </el-col>

          <!-- 第二列 -->
          <el-col :span="2">
            <el-row>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
            </el-form-item>
          </el-row>
          <el-row>
            <el-form-item>
              <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
            </el-form-item>
          </el-row>
          </el-col>
          </el-row>
        </el-form>
        </el-card>
        <el-card shadow="always" style="margin-top: 20px;">
        <el-row :gutter="10" class="mb8">
          <el-col :span="1.5">
            <el-button
              type="primary"
              plain
              icon="el-icon-plus"
              size="mini"
              @click="handleAdd"
              v-hasPermi="['system:appSubmit:add']"
            >新增</el-button>
          </el-col>

          <el-col :span="1.5">
            <el-button
              type="danger"
              plain
              icon="el-icon-delete"
              size="mini"
              :disabled="multiple"
              @click="handleDelete"
              v-hasPermi="['system:appSubmit:remove']"
            >删除</el-button>
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="warning"
              plain
              icon="el-icon-download"
              size="mini"
              @click="handleExport"
              v-hasPermi="['system:appSubmit:export']"
            >导出</el-button>
          </el-col>
          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
        </el-row>

        <el-table v-loading="loading" :data="appSubmitList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="55" align="center" />
          <el-table-column label="指南文件" align="center" prop="publishId">
            <template slot-scope="scope">
              {{ getPublishLabel(scope.row.publishId) }}
            </template>
          </el-table-column>
          <el-table-column label="项目名称" align="center" prop="projectName" />
          <el-table-column label="研究领域" align="center" prop="researchField" />
          <el-table-column label="所属方向"  width="160"align="center" prop="deptId">
            <template slot-scope="scope">
              {{ getDeptLabel(scope.row.deptId) }}
            </template>
          </el-table-column>
          <el-table-column label="申报人"  width="60" align="center" prop="applicant" />
          <el-table-column label="申报时间" align="center" prop="applicationTime" width="180">
            <template slot-scope="scope">
              <span>{{ parseTime(scope.row.applicationTime, '{y}-{m}-{d}') }}</span>
            </template>
          </el-table-column>
          <el-table-column label="填报人"  width="60" align="center" prop="filler" />
          <el-table-column label="执行期限" align="center" prop="executionPeriod" width="180">
          </el-table-column>
          <el-table-column label="经费(万元)" align="center" prop="funding" />
          <el-table-column label="联系电话" width="110" align="center" prop="phone" />
          <el-table-column label="状态" align="center" prop="status">
            <template slot-scope="scope">
              <el-tag v-if="scope.row.status === 1" type="primary">申报中</el-tag>
              <el-tag v-else-if="scope.row.status === 2" type="success">通过</el-tag>
              <el-tag v-else-if="scope.row.status === 3" type="primary">已立项</el-tag>
              <el-tag v-else type="danger">未通过</el-tag>
            </template>
          </el-table-column>
          <el-table-column label="操作"  width="250" align="center" class-name="small-padding fixed-width">
            <template slot-scope="scope">
                <el-button
                  type="text"
                  style="color: #409EFF;"

                  @click="handleView(scope.row)"
                  v-hasPermi="['system:appSubmit:query']"
                >查看</el-button>

                <el-button
                type="text"
                :style="{ color: isPublishClosed(scope.row.publishId) ? '#909399' : '#67C23A' }"
                  @click="handleUpdate(scope.row)"
                  v-hasPermi="['system:appSubmit:edit']"
                  :disabled="isPublishClosed(scope.row.publishId) || scope.row.status !== 1"
                >
                  {{ isPublishClosed(scope.row.publishId) || scope.row.status !== 1 ? '已截止' : '修改' }}
                </el-button>
                <el-button
                type="text"
                :style="{ color: scope.row.status !== 2  ? '#67C23A' : '#909399' }"
                  @click="scope.row.status !== 2 ? handlePass(scope.row) : handleApp(scope.row)"
                  v-hasPermi="['system:appSubmit:pass']"
                >
                  {{ scope.row.status !== 2 ? '通过' : '申报中' }}
                </el-button>

                <el-button
                  type="text"
                  :style="{ color: scope.row.status !== 0   ? '#F56C6C' : '#909399' }"
                  @click="scope.row.status !== 0 ? handleNoPass(scope.row) : handleApp(scope.row)"
                  v-hasPermi="['system:appSubmit:pass']"
                >
                  {{ scope.row.status !== 0 ? '未通过' : '申报中' }}
                </el-button>

                <el-button
                  type="text"
                  :style="{ color: scope.row.status !== 2 || scope.row.status === 3 ? '#909399' : '#67C23A' }"
                  @click="handleFill(scope.row)"
                  v-hasPermi="['system:appSubmit:establish']"
                  :disabled="scope.row.status !== 2 || scope.row.status === 3"
                >
                  {{ '立项' }}
                </el-button>


              </template>
          </el-table-column>
        </el-table>

        <pagination
          v-show="total>0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="getList"
        />

      </el-card>

        <!-- 添加或修改项目征集发布对话框 -->
        <el-dialog :title="title" :visible.sync="open" width="80%" append-to-body>
            <el-form ref="form" :model="form" :rules="rules" label-width="100px">

              <el-row :gutter="20">

                <el-col :span="8">
                  <el-card shadow="always" style="margin: 20px;">
                    <el-descriptions title="申报指南信息" :column="1">
                      <el-descriptions-item label="指南文件名"  > {{this.formData.guideFileName}}</el-descriptions-item>
                      <el-descriptions-item label="归口部门">{{ formData.responsibleDepartment }}</el-descriptions-item>
                      <el-descriptions-item label="级别">{{this.formData.level}}</el-descriptions-item>
                      <el-descriptions-item label="指南类别"  > {{this.formData.guideCategory}}</el-descriptions-item>
                      <el-descriptions-item label="申报期限">{{ formData.applicationDeadline }}</el-descriptions-item>
                      <el-descriptions-item label="申报状态">
                        {{ formatStatus(this.formData.status) }}
                      </el-descriptions-item>
                      <el-descriptions-item label="发布人">
                        {{this.formData.publisher}}
                      </el-descriptions-item>
                      <el-descriptions-item label="发布时间">
                        {{this.formData.publishTime}}
                      </el-descriptions-item>


                    </el-descriptions>
                    <el-divider ></el-divider>
                    <el-descriptions title="附件文档" :column="1" border>
                      <el-descriptions-item v-for="(row, index) in formData.fileRows" :key="'file-' + index" :label="'文件 ' + (index + 1)">
                        <div>
                          <p>文件名称: {{ row.fileClassName }}</p>
                          <p>上传人: {{ row.uploader }}</p>
                          <p>上传时间: {{ row.uploadTime }}</p>


                          <p>
                            <template v-if="row.fileInfo && row.fileInfo.length > 0">
                              <div v-for="(file, fileIndex) in row.fileInfo" :key="fileIndex" style="margin-top: 5px;">
                                <el-link
                                  type="primary"
                                  target="_blank"
                                  @click="handleDownload(file)"
                                >
                                  {{ file.originalName }}
                                </el-link>

                                <span style="margin-left: 8px; color: #909399; font-size: 12px">
                                  ({{ (file.fileSize/1024).toFixed(2) }} KB)
                                </span>
                              </div>
                            </template>
                            <span v-else style="color: #909399">无附件</span>


                          </p>
                        </div>
                      </el-descriptions-item>
                    </el-descriptions>
                  </el-card>
                </el-col>

                <el-col :span="16">
                  <el-card shadow="always" style="margin-top: 20px;">
                  <el-divider ><i class="el-icon-collection"></i>  基本信息</el-divider>
                  <el-row :gutter="20">

                    <el-col :span="12">
                      <el-form-item label="文件指南名" prop="publishId">
                        <el-select :disabled="readonlyPublishId"
                          v-model="form.publishId"
                          placeholder="请选择文件指南"

                          :style="{width: '100%'}"
                          @change="handlePublishIdChange">
                          <el-option
                              v-for="project in selectPublishList"
                              :key="project.id"
                              :label="project.guideFileName"
                              :value="project.id"
                            />
                          </el-select>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="项目名称" prop="projectName">
                        <el-input v-model="form.projectName" placeholder="请输入项目名称" clearable :style="{width: '100%'}"/>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="研究领域" prop="researchField">
                        <el-input v-model="form.researchField" placeholder="请输入研究领域" clearable :style="{width: '100%'}"/>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="研究方向" prop="deptId">
                        <el-select v-model="form.deptId" placeholder="请选择所属方向" clearable :style="{width: '100%'}">
                          <el-option
                            v-for="dept in deptList"
                            :key="dept.deptId"
                            :label="dept.deptName"
                            :value="dept.deptId"
                          />
                        </el-select>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="申报人" prop="applicant">
                        <el-input v-model="form.applicant" placeholder="请输入申报人" clearable :style="{width: '100%'}">
                        </el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="申报时间" prop="applicationTime" >
                        <el-date-picker clearable
                          v-model="form.applicationTime"
                          type="date"
                          :style="{width: '100%'}"
                          value-format="yyyy-MM-dd"
                          placeholder="请选择申报时间">
                        </el-date-picker>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="填报人" prop="filler">
                        <el-input v-model="form.filler" placeholder="请输入填报人" clearable :style="{width: '100%'}">
                        </el-input>
                      </el-form-item>
                    </el-col>

                    <el-col :span="12">
                      <el-form-item label="执行期限" prop="executionPeriod" >
                        <el-date-picker
                          v-model="form.executionPeriod"
                          type="daterange"
                          range-separator=" - "
                          start-placeholder="开始日期"
                          end-placeholder="结束日期"
                          value-format="yyyy-MM-dd"
                          :style="{width: '100%'}"
                          clearable
                        />
                      </el-form-item>
                    </el-col>


                    <el-col :span="12">
                      <el-form-item label="经费" prop="funding">
                        <el-input v-model="form.funding" placeholder="请输入经费" clearable :style="{width: '100%'}">
                          <template slot="append">万元</template>
                        </el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="联系电话" prop="phone">
                        <el-input v-model="form.phone" placeholder="请输入手机号" :maxlength="11" show-word-limit clearable
                        prefix-icon='el-icon-mobile' :style="{width: '100%'}"></el-input>
                      </el-form-item>

                    </el-col>
                  </el-row>

                  <el-divider ><i class="el-icon-folder-opened"></i>  附件文档</el-divider>
                <file-upload-table v-model="form.fileRows" :show-add="true" />
                </el-card>
            </el-col>

            </el-row>

          </el-form>

          <div slot="footer" class="dialog-footer">
            <el-button type="success" @click="submitForm">确 定</el-button>
            <el-button @click="cancel">取 消</el-button>
          </div>
        </el-dialog>


        <el-drawer
          title="填报信息"
          :visible.sync="drawer"
          size="50%">

          <el-card shadow="always" style="margin: 20px;">
            <el-descriptions title="基本信息"  border  :column="2">
              <el-descriptions-item label="项目名称"  > {{this.formView.projectName}}</el-descriptions-item>
              <el-descriptions-item label="研究领域">{{ formView.researchField }}</el-descriptions-item>
              <el-descriptions-item label="所属方向">{{getDeptLabel(formView.deptId) }}</el-descriptions-item>
              <el-descriptions-item label="申报人"  > {{this.formView.applicant}}</el-descriptions-item>
              <el-descriptions-item label="申报时间">{{ formView.applicationTime }}</el-descriptions-item>
              <el-descriptions-item label="填报人">
                {{ this.formView.filler }}
              </el-descriptions-item>
              <el-descriptions-item label="执行期限">
                {{this.formView.executionPeriod}}
              </el-descriptions-item>
              <el-descriptions-item label="申报状态">
                {{formatStatus(this.formView.status)}}
              </el-descriptions-item>
              <el-descriptions-item label="经费(万元)">
                {{this.formView.funding}}
              </el-descriptions-item>
              <el-descriptions-item label="联系电话">
                {{this.formView.phone}}
              </el-descriptions-item>


            </el-descriptions>
          </el-card>
          <el-card shadow="always" style="margin: 20px;">
            <el-descriptions title="附件文档" :column="1" border>
              <el-descriptions-item v-for="(row, index) in formView.fileRows" :key="'file-' + index" :label="row.fileClassName || '未命名文件'">
                <div>
                  <p>
                    <template v-if="row.fileInfo && row.fileInfo.length > 0">
                      <div v-for="(file, fileIndex) in row.fileInfo" :key="fileIndex" style="margin-top: 5px;">
                        <el-link
                          type="primary"
                          target="_blank"
                          @click="handleDownload(file)"
                        >
                          {{ file.originalName }}
                        </el-link>

                        <span style="margin-left: 8px; color: #909399; font-size: 12px">
                          ({{ (file.fileSize/1024).toFixed(2) }} KB)
                        </span>
                      </div>
                    </template>
                    <span v-else style="color: #909399">无附件</span>
                  </p>
                  <p>上传人: {{ row.uploader }}</p>
                  <p>上传时间: {{ row.uploadTime }}</p>

                </div>
              </el-descriptions-item>
            </el-descriptions>
          </el-card>
        </el-drawer>


      </div>
    </template>

    <script>
    import { listAppSubmit, getAppSubmit, delAppSubmit, addAppSubmit, updateAppSubmit } from "@/api/sci/appSubmit";
    import { downloadMinioFile } from '@/api/common/common';
    import { listDept } from '@/api/system/dept';
    import { listPublish, getPublish} from "@/api/sci/appPublish";
    import FileUploadTable from '@/views/sci/components/FileUploadTable';

    export default {
      name: "AppSubmit",
      components: {
        FileUploadTable
      },
      data() {
        return {
          // 遮罩层
          loading: true,
          // 选中数组
          ids: [],
          // 非单个禁用
          single: true,
          // 非多个禁用
          multiple: true,
          // 显示搜索条件
          showSearch: true,
          // 总条数
          total: 0,
          // 项目征集发布表格数据
          appSubmitList: [],
          // 弹出层标题
          title: "",
          // 是否显示弹出层
          open: false,

          drawer: false,

          readonlyPublishId: false, // 控制是否只读

          // 时间范围
          daterangeExecutionPeriod: [],


          username : this.$store.state.user.nickName,

          deptList: [],

          publishList: [],

          selectPublishList: [],

          projectEstablishmentList: [],


          publishId: null,
          // 查询参数
          queryParams: {
            pageSize: 10,
            publishId: null,
            projectName: null,
            researchField: null,
            deptId: null,
            applicant: null,
            applicationTime: null,
            filler: null,
            executionPeriod: null,
            funding: null,
            phone: null,
          },
          // 表单参数
          form: {
            fileRows: [
              {
                fileClassName: '',
                uploader: '',
                uploadTime: '',
                fileInfo: []
              }
            ]
          },
          formView: {
            fileRows: [] // 初始化为空数组
          },

          formData: {
            fileRows: [] // 初始化为空数组
          },
          // 表单校验
          rules: {
            publishId: [
              { required: true, message: "关联的项目征集发布ID不能为空", trigger: "blur" }
            ],
            projectName: [
              { required: true, message: "项目名称不能为空", trigger: "blur" }
            ],
            researchField: [
              { required: true, message: "研究领域不能为空", trigger: "blur" }
            ],
            deptId: [
              { required: true, message: "所属方向不能为空", trigger: "blur" }
            ],
            applicant: [
              { required: true, message: "申报人不能为空", trigger: "blur" }
            ],
            applicationTime: [
              { required: true, message: "申报时间不能为空", trigger: "blur" }
            ],
            filler: [
              { required: true, message: "填报人不能为空", trigger: "blur" }
            ],

            funding: [
              { required: true, message: "经费不能为空", trigger: "blur" }
            ],
            phone: [{
              required: true,
              message: '请输入手机号',
              trigger: 'blur'
            }, {
              pattern: /^1(3|4|5|7|8|9)\d{9}$/,
              message: '手机号格式错误',
              trigger: 'blur'
            }],
            fileRows: {
              fileClassName: [
                { required: true, message: '请选择文件名称', trigger: 'change' }
              ],

              fileInfo: [
                { required: true, message: '请上传附件', trigger: 'change' }
              ],
            },
          }
        };
      },
      created() {
        this.getList();
        this.getDeptList();
        this.getPublishList();
        this.loadAppSubmitData();
      },

      watch: {
        '$route'(to, from) {
          if(to.name==='AppSubmit'){
            this.loadAppSubmitData();
          }

        }
      },

      methods: {
        /** 查询项目征集发布列表 */
        getList() {
          this.loading = true;
          this.queryParams.params = {};
          if (null != this.daterangeExecutionPeriod && '' != this.daterangeExecutionPeriod) {
            this.queryParams.params["beginExecutionPeriod"] = this.daterangeExecutionPeriod[0];
            this.queryParams.params["endExecutionPeriod"] = this.daterangeExecutionPeriod[1];
          }
          this.getPublishList();
          listAppSubmit(this.queryParams).then(response => {
            this.appSubmitList = response.rows;
            this.total = response.total;
            this.loading = false;
          });
        },

        loadAppSubmitData() {
          this.getPublishList();
          this.publishId = this.$route.query.id || this.$route.params.id;
          if (this.publishId) {
            this.open = true;
            this.getPublistInfo();

              // 设置为只读/禁用
            this.readonlyPublishId = true;

            this.form.fileRows[0].uploader = this.username;
          }
        },

        getPublistInfo() {
          if(this.publishId!==null && this.publishId!==undefined)
          {
            getPublish(this.publishId).then(response => {
                if (response.data && response.data.fileRows) {
                  response.data.fileRows = response.data.fileRows.map(fileRow => {
                    try {
                      // 如果fileInfo是字符串则转换为数组，否则保持原样
                      fileRow.fileInfo = typeof fileRow.fileInfo === 'string'
                        ? JSON.parse(fileRow.fileInfo)
                        : fileRow.fileInfo;
                    } catch (e) {
                      console.error('fileInfo解析失败：', e);
                      fileRow.fileInfo = [];
                    }
                    return fileRow;
                  });
                }
                this.formData = response.data;
                // 自动设置 form.publishId 的值
                this.form.publishId = response.data.id;

              }).catch(err => {
                this.$message.error("加载申报信息失败");
              });
            }
        },
        // 取消按钮
        cancel() {
          this.open = false;
          this.reset();
        },
        // 表单重置
        reset() {
          this.form = {
            id: null,
            publishId: null,
            projectName: null,
            researchField: null,
            deptId: null,
            applicant: null,
            applicationTime: null,
            filler: null,
            executionPeriod: null,
            funding: null,
            phone: null,
            createdBy: null,
            createdTime: null,
            updatedBy: null,
            updatedTime: null,
            fileRows: [  // 保持基础结构
              {
                fileClassName: '',
                uploader: '',
                uploadTime: '',
                fileInfo: []
              }
            ]
          };
          this.resetForm("form");
        },

        resetView() {
          this.formView = {
            id: null,
            publishId: null,
            projectName: null,
            researchField: null,
            deptId: null,
            applicant: null,
            applicationTime: null,
            filler: null,
            executionPeriod: null,
            funding: null,
            phone: null,
            createdBy: null,
            createdTime: null,
            updatedBy: null,
            updatedTime: null,
            fileRows: [  // 保持基础结构
              {
                fileClassName: '',
                uploader: '',
                uploadTime: '',
                fileInfo: []
              }
            ]
          };
          this.resetForm("formView");
        },
        handleDatetimeUpdate(index, datetime) {
          // Update the corresponding uploadTime field
          this.$set(this.form.fileRows[index], 'uploadTime', datetime);
        },

        /** 搜索按钮操作 */
        handleQuery() {
          this.queryParams.pageNum = 1;
          this.getList();
        },
        /** 重置按钮操作 */
        resetQuery() {
          this.daterangeExecutionPeriod = [];
          this.resetForm("queryForm");
          this.handleQuery();
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
          this.ids = selection.map(item => item.id)
          this.single = selection.length!==1
          this.multiple = !selection.length
        },
        /** 新增按钮操作 */
        handleAdd() {
          this.reset();
          this.open = true;
          this.readonlyPublishId = false;
          this.title = "项目征集申报";
          this.form.fileRows[0].uploader = this.username;

          this.getPublistInfo();
        },
        /** 修改按钮操作 */
        handleUpdate(row) {
          this.reset();
          const id = row.id || this.ids
          getAppSubmit(id).then(response => {
            this.form = response.data;
            this.form.executionPeriod = this.parseExecutionPeriod(this.form.executionPeriod);
            this.open = true;
            this.readonlyPublishId = false;
            this.title = "修改征集申报";
            this.publishId = this.form.publishId;
            this.getPublistInfo();
          });
        },

        handlePublishIdChange(value) {
          if (value !== null && value !== undefined) {
            this.publishId = value;
            this.getPublistInfo(); // 示例：加载项目详情
          }
        },

        handleView(row) {
          this.resetView();
          const id = row.id || this.ids
          getAppSubmit(id).then(response => {

            if (response.data && response.data.fileRows) {
              response.data.fileRows = response.data.fileRows.map(fileRow => {
                try {
                  // 如果fileInfo是字符串则转换为数组，否则保持原样
                  fileRow.fileInfo = typeof fileRow.fileInfo === 'string'
                    ? JSON.parse(fileRow.fileInfo)
                    : fileRow.fileInfo;
                } catch (e) {
                  console.error('fileInfo解析失败：', e);
                  fileRow.fileInfo = [];
                }
                return fileRow;
              });
            }
            this.formView = response.data;

            this.drawer = true;
          });
        },
        handleDownload(file) {
          const fileName = file.url; // 替换为实际的文件名
          downloadMinioFile(fileName);
        },

        handlePass(row){
          const ids = row.id || this.ids
          if(ids==null){
            this.$modal.msgError("请选择一条数据");
            return;
          }
          updateAppSubmit({id:ids,status:2}).then(response => {
            this.$modal.msgSuccess("项目通过");
            this.getList();
          });
        },
        handleNoPass(row){
          const ids = row.id || this.ids
          if(ids==null){
            this.$modal.msgError("请选择一条数据");
            return;
          }
          updateAppSubmit({id:ids,status:0}).then(response => {
            this.$modal.msgSuccess("项目未通过");
            this.getList();
          });
        },
        handleApp(row){
          const ids = row.id || this.ids
          if(ids==null){
            this.$modal.msgError("请选择一条数据");
            return;
          }
          updateAppSubmit({id:ids,status:1}).then(response => {
            this.$modal.msgSuccess("项目申报中");
            this.getList();
          });
        },
        /** 提交按钮 */
        submitForm() {
          this.$refs["form"].validate(valid => {
            if (valid) {
              if (!fileRows || fileRows.length === 0) {
                this.$message.error('请上传文件');
                return;
              }
              for (let i = 0; i < fileRows.length; i++) {
                const row = fileRows[i];
                if (!row.fileClassName || row.fileClassName.trim() === '') {
                  this.$message.error(`第 ${i + 1} 行文件类型不能为空`);
                  return;
                }

                if (!row.fileInfo || JSON.parse(row.fileInfo).length === 0) {
                  this.$message.error(`第 ${i + 1} 行附件不能为空`);
                  return;
                }
              }
              this.form.executionPeriod = this.formatExecutionPeriod(this.form.executionPeriod);
              if (this.form.id != null) {
                updateAppSubmit(this.form).then(response => {
                  this.$modal.msgSuccess("修改成功");
                  this.open = false;
                  this.getList();
                });
              } else {
                addAppSubmit(this.form).then(response => {
                  this.$modal.msgSuccess("新增成功");
                  this.open = false;
                  this.getList();
                });
              }
            }
          });
        },
        /** 删除按钮操作 */
        handleDelete(row) {
          const ids = row.id || this.ids;
          this.$modal.confirm('是否确认删除项目征集发布编号为"' + ids + '"的数据项？').then(function() {
            return delAppSubmit(ids);
          }).then(() => {
            this.getList();
            this.$modal.msgSuccess("删除成功");
          }).catch(() => {});
        },
        /** 导出按钮操作 */
        handleExport() {
          this.download('system/publish/export', {
            ...this.queryParams
          }, `publish_${new Date().getTime()}.xlsx`)
        },

        handleFill(row) {
          const ids = row.id || this.ids
          this.$router.push({
            name: 'ProjectEstablishment',
            query: { id: ids }
          });
        },


        isPublishClosed(publishId) {
          if (!publishId) return true;

          const publish = this.publishList.find(item => item.id === publishId);
          return !publish || publish.status === 0;
        },


        addRow() {
          this.form.fileRows.push({
            fileClassName: '',
            uploader: this.username,
            uploadTime: '',
            fileInfo: [],
          });
        },
        removeRow(index) {
          if (this.form.fileRows.length > 1) {
            this.form.fileRows.splice(index, 1);
          } else {
            this.$message.warning('至少需要保留一行');
          }
        },

        formatStatus(status) {
          if (status == null) return '未知状态';

          switch (status) {
            case 0:
              return '未通过';
            case 1:
              return '申报中';
            case 2:
              return '已通过';
            default:
              return '未知状态';
          }
        },
        getDeptList() {
          listDept().then(response => {
            this.deptList = response.data.filter(dept => dept.deptId !== 100);      });
        },
        getDeptLabel(deptId) {
          const dept = this.deptList.find(d => d.deptId === deptId);
          return dept ? dept.deptName : '';
        },
        getPublishList() {
          listPublish().then(response => {
            this.publishList = response.rows;
            this.selectPublishList = response.rows.filter(item => item.status !== 0);
          });
        },

        getPublishLabel(publishId) {
          const publish = this.publishList.find(p => p.id === publishId);
          return publish ? publish.guideFileName : '';
        },

        // 字符串 -> 数组
        parseExecutionPeriod(str) {
          return str ? str.split(' - ') : [];
        },

        // 数组 -> 字符串
        formatExecutionPeriod(arr) {
          return Array.isArray(arr) ? arr.join(' - ') : '';
        },




      }
    };
    </script>
